package com.meterhuang;

import lombok.extern.slf4j.Slf4j;

import java.util.ArrayList;
import java.util.List;

/**
 * 查找序列中第三大的数[easy]
 * 给你一个非空数组，返回此数组中 第三大的数 。如果不存在，则返回数组中最大的数。
 * demo:
 * 输入：[2, 2, 3, 1]
 * 输出：1
 * 解释：注意，要求返回第三大的数，是指在所有不同数字中排第三大的数。
 * 此例中存在两个值为 2 的数，它们都排第二。在所有不同数字中排第三大的数为 1
 * 来源链接：https://leetcode-cn.com/problems/third-maximum-number
 *
 * @author meterhuang
 * @date 2021/04/08 14:36
 */
@Slf4j
public class ThirdMax {

	public static void main(String[] args) {
		int thirdMax = thirdMax(new int[]{2});
		log.info("third: {}", thirdMax);
	}

	public static int thirdMax(int[] nums) {
		for (int i = 0; i < nums.length - 1; ++i) {
			for (int j = 0; j < nums.length - i - 1; ++j) {
				// 降序排列
				if (nums[j] < nums[j + 1]) {
					int temp = nums[j + 1];
					nums[j + 1] = nums[j];
					nums[j] = temp;
				}
			}
		}
		log.info("array: {}", nums);
		int thirdMax = nums[0];
		if (nums.length < 3) {
			return thirdMax;
		}
		List<Integer> list = new ArrayList<>();
		for (int i = 0; i < nums.length; ++i) {
			if (!list.contains(nums[i])) {
				list.add(nums[i]);
			}
		}
		if (list.size() < 3) {
			return thirdMax;
		} else {
			thirdMax = list.get(2);
		}
		return thirdMax;
	}
}
